package org.wdcode.common.constants;

/**
 * 保存正则表达式常量类
 * @author WD
 * @since JDK6
 * @version 1.0 2009-09-15
 */
public final class RegexConstants {
	/**
	 * 全由数字组成
	 */
	public final static String	DIGIT;
	/**
	 * 4-18个以字母开头、可带数字、"_"的字串
	 */
	public final static String	USERNAME;
	/**
	 * 普通密码 6-20个字母、数字、下划线
	 */
	public final static String	PWD;
	/**
	 * 普通电话、传真号码：可以“+”开头，除数字外，可含有“-”
	 */
	public final static String	PHONE;
	/**
	 * 手机号码 13x 15x 188 189 开头
	 */
	public final static String	MOBILE;
	/**
	 * 邮政编码
	 */
	public final static String	POST;
	/**
	 * IP
	 */
	public final static String	IP;
	/**
	 * 正整数
	 */
	public final static String	NUMBER;
	/**
	 * Email
	 */
	public final static String	EMAIL;
	/**
	 * URL
	 */
	public final static String	URL;
	/**
	 * Date 如2004-06-06
	 */
	public final static String	DATE;
	/**
	 * DateTime 如2004-11-12 12:10:16
	 */
	public final static String	DATETIME;
	/**
	 * 汉字
	 */
	public final static String	CHINESE;
	/**
	 * 字母和数字
	 */
	public final static String	CHARS;
	/**
	 * 字母 数值 汉字 空格
	 */
	public final static String	CHARNUMBER;
	/**
	 * 中文和英文
	 */
	public final static String	REALNAME;
	/**
	 * 密码 字母数字特殊符号
	 */
	public final static String	PASSWORD;
	/**
	 * 联通、电信号段
	 */
	public final static String	CUQMOBILE;
	/**
	 * 电信号段
	 */
	public final static String	TELEMOBILE;
	/**
	 * 字母
	 */
	public final static String	LETTERS;
	/**
	 * 身份证
	 */
	public final static String	IDENTITYCARDNUM;

	/**
	 * 静态初始化
	 */
	static {
		// 全由数字组成
		DIGIT = "^\\d+$";
		// 4-18个以字母开头、可带数字、"_"的字串
		USERNAME = "^[a-zA-Z]{1}[\\w]{3,17}$";
		// 普通密码 6-20个字母、数字、下划线
		PWD = "^(\\w){6,20}$";
		// 普通电话、传真号码：可以“+”开头，除数字外，可含有“-”
		PHONE = "^[+]{0,1}(\\d){1,3}[   ]?([-]?((\\d)|[   ]){1,12})+$";
		// 手机号码 13x 15x 188 189 开头
		MOBILE = "^(13[0-9]|15[0|3|6-9]|18[8|9])\\d{8}$";
		// 邮政编码
		POST = "^[a-zA-Z0-9   ]{3,6}$";
		// IP
		IP = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$";
		// 正整数
		NUMBER = "^[0-9]*[1-9][0-9]*$";
		// Email
		EMAIL = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$";
		// URL
		URL = "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$";
		// Date 如2004-06-06
		DATE = "^(\\d{4})\\-(0[1-9]|1[0-2])\\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$";
		// DateTime 如2004-11-12 12:10:16
		DATETIME = "^(\\d{4})\\-(0[1-9]|1[0-2])\\-(0[1-9]|1[0-9]|2[0-9]|3[0-1]) (0[0-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9])$";
		// 汉字
		CHINESE = "^[\\u4e00-\\u9fa5]*$";
		// 字母和数字
		CHARS = "^[a-zA-Z0-9]$";
		// 字母 数值 汉字 空格
		CHARNUMBER = "^([a-zA-Z0-9\u4e00-\u9fa5]|[_]|[ ]|[-]){1,100}$";
		// 中文和英文
		REALNAME = "^[a-zA-Z\u4e00-\u9fa5 .]+$";
		// 密码 字母数字特殊符号
		PASSWORD = "^[a-zA-Z0-9.!#$%&^*-_=+~?><]+$";
		// 联通、电信号段
		CUQMOBILE = "^(13[0-3]|15[36]|189)(\\d){8}$";
		// 电信号段
		TELEMOBILE = "^(133)(\\d){8}$";
		// 字母
		LETTERS = "^[a-zA-Z]+$";
		// 身份证
		IDENTITYCARDNUM = "^[\\d]{15}|[\\d]{17}[\\dxX]{1}$";
	}

	/**
	 * 私有构造禁止外部实例化
	 */
	private RegexConstants() {}
}
